package com.shs.sys.controller;

import cn.hutool.core.date.DateUtil;
import com.shs.sys.common.SHFileUtils;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author: jxm
 * @Description: 文件上传前端控制器
 * @Date: 2020/4/16 18:54
 * @Version: 1.0
 */
@RestController
@RequestMapping("file")
public class FileController {

    /**
     * 文件上传
     * @param mf
     * @return
     */
    @RequestMapping("uploadFile")
    public Map<String,Object> uploadFile(MultipartFile mf){
        //1,获取原文件名
        String oldFileName = mf.getOriginalFilename();
        //2,根据文件名生成新的文件名
        String newFileName = SHFileUtils.createNewFileName(oldFileName);
        //3,得到当前日期的字符串(作为文件存放路径)
        String dirName = DateUtil.format(new Date(), "yyyy-MM-dd");
        //4,构造文件夹
        File dirFile = new File(SHFileUtils.UPLOAD_PATH,dirName);
        //5,判断当前文件夹是否存在
        if(!dirFile.exists()){
            //mkdir() 如果父目录不存在，则创建失败。
            //mkdirs() 如果父目录不存在，连同父目录一起创建。
            dirFile.mkdirs();
        }
        //6,构造文件对象
        File file = new File(dirFile,newFileName+"_temp");
        try {
            //7,把mf里面的图片信息写入file
            mf.transferTo(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Map<String,Object> map=new HashMap<>();
        map.put("path",dirName+File.separator+newFileName+"_temp");
        return map;
    }

    /**
     * 图片下载
     */
    @RequestMapping("showImageByPath")
    public ResponseEntity<Object> showImgeByPath(String path){
        return SHFileUtils.createResponseEntity(path);
    }

}
